package pojo;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author LiangHaiBo
 * @version 1.0
 * @date 2021.9.9 下午 13:12
 *
 * 购物车实体
 */
public class Cart {
    //创建Map集合
    //key:商品pid
    //value:购物车项
    private Map<String,CartItem> map = new LinkedHashMap<>() ; //保证迭代顺序

    //获取所有的Value信息 提供一个方法 :列用Map集合的Collection<V> values():获取所有的值的集合
    public Collection<CartItem> getItems(){ //getItems() items:就是Cart的bean属性
        return map.values() ;
    }

    //包含总计金额
    private Double totalMoney= 0.0 ;

    public Map<String, CartItem> getMap() {
        return map;
    }

    public void setMap(Map<String, CartItem> map) {
        this.map = map;
    }

    public Double getTotalMoney() {
        return totalMoney;
    }

    public void setTotalMoney(Double totalMoney) {
        this.totalMoney = totalMoney;
    }

    /**
     * 定义一个功能:将购物车项添加到购物车实体中
     * @param cartItem
     */
    public void addCartItemToCart(CartItem cartItem){
        //判断购物车项是否重复添加
        String pid = cartItem.getProduct().getPid();
        if(map.containsKey(pid)){
            CartItem oldcartItem = map.get(pid);
            oldcartItem.setCount(oldcartItem.getCount()+cartItem.getCount());
        }else {
            map.put(pid,cartItem);
        }

        //总计金额
        totalMoney = totalMoney+cartItem.getSubTotal();
    }

    /**
     * 通过商品id删除:将购物车项从购物车中删除
     * @param pid
     */
    public  void deleteCartItemFromCart(String pid){
        CartItem cartItem = map.remove(pid);
        totalMoney = totalMoney-cartItem.getSubTotal();
    }

    /**
     * 清空购物车方法
     */
    public void clearCart(){
        map.clear();

        totalMoney = 0.0;
    }

}
